package org.springframework.security.authentication;

import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;

/**
 * @author Dillon
 * @date 2024/6/26
 * @slogan 致敬大师 致敬未来的你
 * @desc 认证管理器接口 默认的实现类 为 {@link ProviderManager}
 */
public interface AuthenticationManager {

	/**
	 * 认证接口，该接口有三个不同返回值表示认证状态
	 * 1、返回 Authentication 表示认证成功
	 * 2、抛出 AuthenticationException 表示认证失败
	 * 3、返回null 表示不能断定认证
	 * @param authentication 认证实现类
	 * @return 是否认证成功
	 * @throws AuthenticationException 认证失败异常
	 */
	Authentication authenticate(Authentication authentication) throws AuthenticationException;

}
